package net.neptech.model.vo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @Author Saya
 * @Date 2025/8/18 19:14
 * @Description TODO
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class FormVO {

    private String formId;

    private String permission;

    private String icon;

    private String formName;

    private String formType;

    private Boolean required;

    private String typeName;

    private String placeholder;

    private Props props;

    @Data
    public static class DynamicFormConfig {

        private List<FormConfig> list;

//            @JsonTypeInfo(use = JsonTypeInfo.Id.NAME,property = "type",defaultImpl = EmptyNode.class)
//            private EmptyNode condition;
        @Data
        public static class FormConfig {

            private Object value;

            private String contentConfig;
        }
    }
    @Data
    public static class Props {
        /**
         * 是否是私有变量值 如果true 则变量值存储在任务私有变量里
         */
        private Boolean privateVal;
//        /**
//         * 远程配置
//         */
//        private HttpSetting remoteConfig;

        /**
         * 1手动 2远程
         */
        private Integer dataFrom;
        /**
         * 统计总数
         */
        private Boolean sum;

        /**
         * 表单值
         */
        private Object value;
        /**
         * 数据是否是空的
         */
        private Boolean isBlank = false;
        /**
         * 表单选项
         */
        private Object options;
        /**
         * 是否可以选择自己
         */
        private Boolean self;
        /**
         * 多选单选
         */
        private Boolean multi;
        /**
         * 是否默认值是发起人
         */
        private Boolean defaultRoot;
        /**
         * 旧的表单
         */
        private Object oriForm;
        /**
         * 最小长度
         */
        private Integer minLength;
        /**
         * 最大长度
         */
        private Integer maxLength;
        /**
         * 小数位数
         */
        private Integer radixNum;
        /**
         * 最大尺寸/数量等
         */
        private Integer maxSize;
        /**
         * 是否显示中文大写
         */
        private Boolean showChinese;
        /**
         * 正则表达式
         */
        private String regex;
        /**
         * 正则表达式描述
         */
        private String regexDesc;
        /**
         * 单位
         */
        private String unit;
        /**
         * 是否可以选半个  比如评分表单
         */
        private Boolean halfSelect;
        /**
         * 表达式集合  公式表达中使用
         */
        private List expList;
        /**
         * 是否使用上次的内容
         * 签名表单
         */
        private Boolean lastContent;
        /**
         * 是否只读
         */
        private Boolean readonly;
        /**
         * 文件后缀集合
         */
        private Object suffixArray;
        /**
         * 最大值
         */
        private Object max;
        /**
         * 最小值
         */
        private Object min;
    }
}
